Sponsored by Deepsite.site

Kvasir Legal

Created By
Kvasir Legala month ago
Kvasir Legal — verifiable law for AI agents, now with interactive apps Kvasir is a grounding layer for legal AI: 439,000+ statutes and 43,000+ court decisions across six jurisdictions — Germany (federal, Bavaria, NRW), Austria, Switzerland and the EU — every object carrying its provenance (official source, content version, retrieval date). Six tools: resolve_citation (free-text citation → canonical object with pinpoint paragraph + deeplink), verify_citations (batch hallucination check, ≤200 citations per call), search_legal (semantic + full-text), get_legal_object / get_legal_objects, legal_uri_grammar. New — interactive MCP Apps (Claude): citation checks render as a traffic-light report directly in the chat (every citation green/red with source and deeplink, one-click fix suggestions), and resolved statutes render as formatted norm cards with the exact wording and provenance badge. Connect: https://kvasir.legal/mcp — OAuth 2.1 (sign in with your kvasir account, no key handling) or X-API-Key header. Works with Claude, ChatGPT (developer mode connectors), Le Chat, Copilot/VS Code, Cursor and any streamable-HTTP MCP client. Try the REST layer without a key: curl "https://kvasir.legal/api/v1/resolve?cite=§ 242 BGB" Docs: https://kvasir.legal/developers · Invite beta: hello@kvasir.legal
Overview
Grounding API

Verifiable German & EU law
for your AI.

One canonical object per legal entity — norms, statutes, court decisions — with provenance, addressable sub-units, ready-made citations and the citation graph. Model-agnostic: call it over REST, or plug it into any agent as an MCP tool. You bring the reasoning; we bring the ground truth.

Base URL https://kvasir.legal · questions? [email protected] · new to grounding? Why legal AI needs a grounding layer →

Getting access. The API is in invite-only beta. Already have a kvasir account? Create a key in your dashboard →

Connect in 60 seconds

One endpoint — https://kvasir.legal/mcp — plugs kvasir into the AI you already work with. Your assistant then searches, resolves and verifies citations against the live corpus instead of answering from memory.

ChatGPT. Settings → Connectors → Advanced → Developer mode → add MCP server https://kvasir.legal/mcp with header X-API-Key → enable it in your chat's tools.

Claude — no key needed. Settings → Connectors → Add custom connector → paste https://kvasir.legal/mcp → sign in with your kvasir account → done. All six tools appear in every chat.

Microsoft 365 Copilot. Available firm-wide via Copilot Studio: your IT admin adds https://kvasir.legal/mcp once as a custom MCP action (API key as X-API-Key) — every lawyer in the tenant can then use it in Copilot chats.

Perplexity. On plans with connector support: Settings → Connectors → add an MCP connector with URL https://kvasir.legal/mcp and your X-API-Key.

Le Chat (Mistral). Settings → Connectors → add MCP connector → URL https://kvasir.legal/mcp + X-API-Key.

Developer tools & agents. Claude Desktop (claude_desktop_config.json via mcp-remote), GitHub Copilot in VS Code (.vscode/mcp.json, OAuth automatic), Cursor and any MCP-capable agent: streamable-HTTP, URL https://kvasir.legal/mcp, header X-API-Key: kvk_… — or plain REST (interactive reference).

Authentication

Try it without a key: resolve, search and object work keyless in sandbox mode — 20 requests per day, no signup. Just call them:

curl "https://kvasir.legal/api/v1/resolve?cite=§ 242 Abs. 1 BGB"

For real use, send an API key as a header (either form works):

X-API-Key: kvk_your_key
Authorization: Bearer kvk_your_key

Unauthenticated requests get 401. The machine-readable contract is public at /api/v1/schema (no key needed).

Connecting from Claude or another MCP client? Just add https://kvasir.legal/mcp as a connector — you'll be walked through an OAuth sign-in with your kvasir account instead of pasting a key. Keys and OAuth work side by side; both count against the same tier.

Quickstart

No key, no signup — this works right now (sandbox, 20/day):

curl "https://kvasir.legal/api/v1/resolve?cite=§ 242 Abs. 1 BGB"

With a key, fetch the full object:

curl -H "X-API-Key: kvk_…" \
  "https://kvasir.legal/api/v1/object/norm:bund:BGB:242?include=all"
{
  "uri": "norm:bund:BGB:242",
  "canonical_uri": "norm:bund:BGB:242",
  "kind": "norm",
  "exists": true,
  "identity":   { "title": "§ 242 BGB", "subtitle": "Bundesrecht", "href": "/bgb/242" },
  "provenance": { "quelle": "bund", "source": "gesetze-im-internet.de", "derived": false, "version": "" },
  "content":    { "label": "§ 242", "plain_text": "Der Schuldner ist verpflichtet …", "html": "…" },
  "units": [
    { "path": "a1", "unit": "abs", "label": "1",
      "text": "…", "citation": "§ 242 Abs. 1 BGB", "deeplink": "/bgb/242#a1" }
  ],
  "relations": { "in": [ … cited-by … ], "out": [ … cites … ] }
}

Object URIs

Every legal object is addressed by a stable URI:

KindURIExample
Normnorm:{quelle}:{kuerzel}:{norm_id}norm:bund:BGB:242
Statutegesetz:{quelle}:{kuerzel}gesetz:bund:BGB
Decisiondec:{quelle}:{source_id|celex}dec:eu:62019CJ0311
Conceptconcept:{scheme}:{slug}concept:eu:data-protection
Norm versionnormversion:{id}normversion:1234

quellebund (federal), by (Bavaria), eu. Norm URIs are tolerant: norm:bund:BGB:242 resolves the same object as the raw slug; the response's canonical_uri gives the clean form.

Endpoints

Prefer clicking around? Try the interactive API reference. Building with an LLM? Point it at /llms.txt.

GET/api/v1/resolve?cite=§ 242 Abs. 1 BGB

Citation in, object out. Parses free-text citations (Art. 6 Abs. 1 lit. f DSGVO, C-311/18) — no URI grammar needed. Returns the pinpoint sub-unit and did-you-mean suggestions when something doesn't resolve.

POST/api/v1/verify{ "citations": [ … ≤200 ] } or { "text": "…" }

The hallucination check. Verify every citation in a drafted answer in one call: per-citation verified/unresolved status, canonical URI, source and pinpoint unit.

GET/api/v1/object/<uri>?include=…

One object. include is comma-separated; see below.

POST/api/v1/objects{ "uris": [ … ≤100 ], "include": "content" }

Batch-resolve many URIs in one call — e.g. to ground every citation in a draft at once.

GET/api/v1/search?q=…&kinds=norm,decision&quellen=bund,by,eu&limit=20&offset=0

Free-text search → ranked hits [{uri, kind, title, snippet, score}]. Filter by type (kinds: statutes vs case law) and jurisdiction (quellen) so every result slot counts. Paginates via offset.

GET/api/v1/schema — the contract, machine-readable (public).

GET/api/v1/openapi.json — full OpenAPI 3.1 spec (public). Import into Postman or generate a client SDK.

The include parameter

ValueAdds
contentFull text + html + metadata (default).
unitsAddressable sub-units with exact text, citation & deeplink — norm = paragraph/number/letter (a1.ba), decision = Randnummer (r17). Fidelity-validated: only sub-units whose text verifies against the full text are returned; units_confidence reports the pass rate.
versionsA norm's earlier wordings as normversion: URIs (where tracked).
childrenOn a statute (gesetz:): the full table of contents — every norm as [{uri, label, section_path}] in order. Ask "which sections does the BDSG have?" in one call.
relationsCitation graph: what cites it / what it cites, instances, concepts.
authorityPageRank-style authority score within the graph.
allEverything above.

Use it as an MCP tool

Any MCP client calls the layer natively — endpoint https://kvasir.legal/mcp (OAuth or X-API-Key). Six tools:

ToolWhat it does
resolve_citationCitation string → verifiable object + pinpoint unit. The preferred entry point.
verify_citationsBatch hallucination check (≤200) — run over every drafted answer.
search_legalSemantic + full-text search → ranked canonical URIs.
get_legal_objectOne URI → object with provenance, units, versions, relations.
get_legal_objectsBatch resolve (≤100 URIs).
legal_uri_grammarURI scheme reference for constructing URIs.

Rate limits & errors

Errors are JSON: { "error": "…" }. 401 = missing/invalid key · 429 = rate limit or monthly quota exceeded · exists:false means the URI matched nothing (not a server error). Per-key limits are set when your key is issued.

Server Config

{
  "mcpServers": {
    "kvasir-legal": {
      "url": "https://kvasir.legal/mcp",
      "headers": {
        "X-API-Key": "kvk_your_key"
      }
    }
  }
}
Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
WindsurfThe new purpose-built IDE to harness magic
CursorThe AI Code Editor
Amap Maps高德地图官方 MCP Server
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
RedisA Model Context Protocol server that provides access to Redis databases. This server enables LLMs to interact with Redis key-value stores through a set of standardized tools.
Tavily Mcp
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
DeepChatYour AI Partner on Desktop
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
Y GuiA web-based graphical interface for AI chat interactions with support for multiple AI models and MCP (Model Context Protocol) servers.
Serper MCP ServerA Serper MCP Server
ChatWiseThe second fastest AI chatbot™
Playwright McpPlaywright MCP server